/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package angels.servlet;

import angels.modelo.Anjo;
import angels.modelo.AnjoEvento;
import angels.modelo.Crianca;
import angels.modelo.Evento;
import angels.rn.AnjoRN;
import angels.rn.EventoRN;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author AlanmLira
 */
public class AppAngelsServlet extends HttpServlet {

    private String controlador = "valor";
    private int indice = 0;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet LacibMusicServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet LacibMusicServlet at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        controlador = request.getParameter("controlador");
        String resultado = "";
        int aux = 0;
        int x = 0;
        String user = "";
        String pass = "";
        String pont = "";
        String id = "";
        Anjo anjo = null;
        Evento event = null;
        List<Evento> lEventios = null;
        List<Crianca> lCrianca = null;
        switch (controlador) {
            case "login":
                user = request.getParameter("user");
                pass = request.getParameter("pass");
                System.out.println("Anjo: " + user + " Pass: " + pass);
                anjo = new AnjoRN().obterUsuario(user, pass);
                System.out.println("Anjo: " + anjo);
                if (anjo != null) {
                    response.getOutputStream().print(anjo.getId() + "");
                } else {
                    response.getOutputStream().print("n");
                }
                break;
            case "acessoEventoSenha":
                user = request.getParameter("nomeEvento");
                pass = request.getParameter("senhaEvento");
                System.out.println("nomeEvento: " + user + " senhaEvento: " + pass);
                event = new EventoRN().findEventoSenha(user, pass);
                System.out.println("EventoXXX: " + event);
                if (event != null) {
                    response.getOutputStream().print("s");
                } else {
                    response.getOutputStream().print("n");
                }
                break;
            case "todosEventos":
                lEventios = new EventoRN().obterTodos();
                resultado = "[{";
                x = 0;
                for (Evento evento : lEventios) {
                    if (x != 0) {
                        resultado += ",{";
                    } else {
                        x++;
                    }
                    resultado += "\"idEvento\":\"" + evento.getId() + "\",\"nomeEvento\":\""
                            + evento.getNome() + "\",\"descricaoEvento\":\""
                            + evento.getDescricao() + "\",\"statusEvento\":\""
                            + evento.getStatus() + "\",\"senhaEvento\":\""
                            + evento.getSenha() + "\"}";

                }
                resultado += "]";
                resultado = resultado.replace("/", "\\/");
                //System.out.println("resultado  :" + resultado);
                response.getOutputStream().print(resultado);
                break;
            case "todosEventoAnjos":
                id = request.getParameter("id");
                anjo = new AnjoRN().obter(Integer.parseInt(id));
                lEventios = new ArrayList<Evento>();
                for (AnjoEvento anjoEvento : anjo.getAnjoEventoList()) {
                    lEventios.add(anjoEvento.getEvento());
                }
                resultado = "[{";
                x = 0;
                for (Evento evento : lEventios) {
                    if (x != 0) {
                        resultado += ",{";
                    } else {
                        x++;
                    }
                    resultado += "\"idEvento\":\"" + evento.getId() + "\",\"nomeEvento\":\""
                            + evento.getNome() + "\",\"descricaoEvento\":\""
                            + evento.getDescricao() + "\",\"statusEvento\":\""
                            + evento.getStatus() + "\",\"senhaEvento\":\""
                            + evento.getSenha() + "\"}";

                }
                resultado += "]";
                resultado = resultado.replace("/", "\\/");
                //System.out.println("resultado  :" + resultado);
                response.getOutputStream().print(resultado);
                break;
            case "todosPerdidosEvento":
                lCrianca = new AnjoRN().obterTodasCriancas(Integer.parseInt(request.getParameter("eventoID")));
                resultado = "[{";
                x = 0;
                for (Crianca crianca : lCrianca) {
                    if (crianca.getDevolvida() == null && crianca.getEncontrada() == null && crianca.getPerdida() != null) {
                        if (x != 0) {
                            resultado += ",{";
                        } else {
                            x++;
                        }
                        resultado += "\"idCrianca\":\"" + crianca.getId() + "\",\"nomeCrianca\":\""
                                + crianca.getNome() + "\",\"nomeResponsavel\":\""
                                + crianca.getResponsavel().getNome() + "\"}";



                    }
                }
                resultado += "]";
                resultado = resultado.replace("/", "\\/");
                System.out.println("resultado  :" + resultado);
                response.getOutputStream().print(resultado);
                break;
            case "todosAchadosEvento":
                lCrianca = new AnjoRN().obterTodasCriancas(Integer.parseInt(request.getParameter("eventoID")));
                resultado = "[{";
                x = 0;
                for (Crianca crianca : lCrianca) {
                    if (crianca.getDevolvida() == null && crianca.getEncontrada() != null) {
                        if (x != 0) {
                            resultado += ",{";
                        } else {
                            x++;
                        }
                        resultado += "\"idCrianca\":\"" + crianca.getId() + "\",\"nomeCrianca\":\""
                                + crianca.getNome() + "\",\"nomeResponsavel\":\""
                                + crianca.getResponsavel().getNome() + "\"}";

                    }
                }
                resultado += "]";
                resultado = resultado.replace("/", "\\/");
                System.out.println("resultado  :" + resultado);
                response.getOutputStream().print(resultado);
                break;
            case "todosDevolvidosEvento":
                lCrianca = new AnjoRN().obterTodasCriancas(Integer.parseInt(request.getParameter("eventoID")));
                resultado = "[{";
                x = 0;
                for (Crianca crianca : lCrianca) {
                    if (crianca.getDevolvida() != null) {
                        if (x != 0) {
                            resultado += ",{";
                        } else {
                            x++;
                        }
                        resultado += "\"idCrianca\":\"" + crianca.getId() + "\",\"nomeCrianca\":\""
                                + crianca.getNome() + "\",\"nomeResponsavel\":\""
                                + crianca.getResponsavel().getNome() + "\"}";

                    }
                }
                resultado += "]";
                resultado = resultado.replace("/", "\\/");
                System.out.println("resultado  :" + resultado);
                response.getOutputStream().print(resultado);
                break;


            default:
                response.getOutputStream().print("Erro ao efetuar operação de Conexão entre Servlet-Mobile.");
        }




    }

    public static void main(String[] args) {
        Anjo anjo = new AnjoRN().obterUsuario("Kaká", "kaka");
        System.out.println("Anjo: " + anjo.getNome());
        anjo = new AnjoRN().obterUsuario("Kaka", "kaka");
        System.out.println("Anjo: " + anjo.getNome());
        List<Evento> lEventios = new EventoRN().obterTodos();
        for (Evento evento : lEventios) {
            System.out.println("Evento: " + evento.getNome());
        }

    }
    /*
     resultado = "[{";
     for (Musica musica : lMusicas) {
     if (x != 0) {
     resultado += ",{";
     } else {
     x++;
     }
     resultado += "\"Musica\":\"" + musica.getMusica() + "\",\"imgAlbum\":\""
     + musica.getDiscoid().getAlbumid().getImgAlbum() + "\",\"idAlbum\":\""
     + musica.getDiscoid().getAlbumid().getId() + "\",\"nomeAlbum\":\""
     + musica.getDiscoid().getAlbumid().getNomeAlbum() + "\",\"nomeArtista\":\""
     + musica.getArtistaid().getNomeArtista() + "\",\"nomeGeneroMusical\":\""
     + musica.getEstiloMusicalid().getNomeGeneroMusical() + "\",\"nomeGravadora\":\""
     + musica.getDiscoid().getAlbumid().getSeloid().getGravadoraid().getNomeGravadora() + "\",\"nomeMusica\":\""
     + musica.getNomeMusica() + "\"}";

     }
     resultado += "]";
     resultado = resultado.replace("/", "\\/");
     //resultado = resultado.replace(":", "");
     System.out.println("resultado: " + resultado);
     response.getOutputStream().print(resultado);
               

     resultado = "[{";
     for (Musica musica : lMusicas) {
     if (x != 0) {
     resultado += ",{";
     } else {
     x++;
     }
     resultado += "\"Musica\":\"" + musica.getMusica() + "\",\"imgAlbum\":\""
     + musica.getDiscoid().getAlbumid().getImgAlbum() + "\",\"idAlbum\":\""
     + musica.getDiscoid().getAlbumid().getId() + "\",\"nomeAlbum\":\""
     + musica.getDiscoid().getAlbumid().getNomeAlbum() + "\",\"nomeArtista\":\""
     + musica.getArtistaid().getNomeArtista() + "\",\"nomeGeneroMusical\":\""
     + musica.getEstiloMusicalid().getNomeGeneroMusical() + "\",\"nomeGravadora\":\""
     + musica.getDiscoid().getAlbumid().getSeloid().getGravadoraid().getNomeGravadora() + "\",\"nomeMusica\":\""
     + musica.getNomeMusica() + "\"}";

     }
     resultado += "]";
     resultado = resultado.replace("/", "\\/");
     //resultado = resultado.replace(":", "");
     response.getOutputStream().print(resultado);
     */

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
